#ifndef CONTROL_API_H
#define CONTROL_API_H

#include "common.h"

// 控制API请求
typedef struct {
    char *api_name;           // API名称
    char *url;                // 请求URL
    char *method;             // 请求方法
    json_t *headers;          // 请求头
    json_t *params;           // 请求参数
    json_t *body;             // 请求体
    int timeout_ms;           // 超时时间
} control_request_t;

// 控制API响应
typedef struct {
    int status_code;          // 状态码
    json_t *response_data;    // 响应数据
    char *error_msg;          // 错误信息
    time_t timestamp;         // 时间戳
} control_response_t;

// 控制API执行上下文
typedef struct {
    int scene_id;             // 场景ID
    control_request_t request; // 控制请求
    int retry_count;          // 当前重试次数
    int max_retries;          // 最大重试次数
    int retry_interval;       // 重试间隔
    void *user_data;          // 用户数据
} control_context_t;

// 控制API回调函数
typedef void (*control_callback_t)(control_context_t *context, control_response_t *response);

// 控制API管理器
typedef struct {
    event_loop_t *event_loop;
    bool initialized;
} control_api_manager_t;

// 控制API管理
int control_api_manager_init(control_api_manager_t *manager, event_loop_t *event_loop);
int control_api_execute_async(control_context_t *context, control_callback_t callback);
control_response_t *control_api_execute_sync(control_request_t *request);
void control_api_manager_cleanup(control_api_manager_t *manager);

// 内存管理
control_request_t *control_request_create(void);
void control_request_free(control_request_t *request);
control_response_t *control_response_create(void);
void control_response_free(control_response_t *response);
control_context_t *control_context_create(void);
void control_context_free(control_context_t *context);

#endif
